package com.pm.business.service.impl;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import com.pm.common.utils.StringUtils;
import org.springframework.transaction.annotation.Transactional;
import com.pm.business.domain.BidProjectWorkflowPoint;
import com.pm.business.mapper.BidProjectWorkflowMapper;
import com.pm.business.domain.BidProjectWorkflow;
import com.pm.business.service.IBidProjectWorkflowService;

/**
 * 投标进程管理Service业务层处理
 * 
 * @author zxl
 * @date 2022-05-10
 */
@Service
public class BidProjectWorkflowServiceImpl implements IBidProjectWorkflowService 
{
    @Autowired
    private BidProjectWorkflowMapper bidProjectWorkflowMapper;

    /**
     * 查询投标进程管理
     * 
     * @param workflowId 投标进程管理主键
     * @return 投标进程管理
     */
    @Override
    public BidProjectWorkflow selectBidProjectWorkflowByWorkflowId(Long workflowId)
    {
        return bidProjectWorkflowMapper.selectBidProjectWorkflowByWorkflowId(workflowId);
    }
    @Override
    public BidProjectWorkflow selectActiveWorkflow()
    {
        return bidProjectWorkflowMapper.selectActiveWorkflow();
    }
    @Override
    public BidProjectWorkflow selectBidProjectProcessByProjectId(Long projectId)
    {
        return bidProjectWorkflowMapper.selectBidProjectProcessByProjectId(projectId);
    }

    /**
     * 查询投标进程管理列表
     * 
     * @param bidProjectWorkflow 投标进程管理
     * @return 投标进程管理
     */
    @Override
    public List<BidProjectWorkflow> selectBidProjectWorkflowList(BidProjectWorkflow bidProjectWorkflow)
    {
        return bidProjectWorkflowMapper.selectBidProjectWorkflowList(bidProjectWorkflow);
    }
    @Override
    public List<BidProjectWorkflow> selectBidProjectWorkflowDetailList(List<Long> idList)
    {
        return bidProjectWorkflowMapper.selectBidProjectWorkflowDetailList(idList);
    }
    @Override
    public Integer countActiveWorkflow(BidProjectWorkflow bidProjectWorkflow)
    {
        return bidProjectWorkflowMapper.countActiveWorkflow(bidProjectWorkflow);
    }

    /**
     * 新增投标进程管理
     * 
     * @param bidProjectWorkflow 投标进程管理
     * @return 结果
     */
    @Transactional
    @Override
    public int insertBidProjectWorkflow(BidProjectWorkflow bidProjectWorkflow)
    {
        int rows = bidProjectWorkflowMapper.insertBidProjectWorkflow(bidProjectWorkflow);
        insertBidProjectWorkflowPoint(bidProjectWorkflow);
        return rows;
    }

    /**
     * 修改投标进程管理
     * 
     * @param bidProjectWorkflow 投标进程管理
     * @return 结果
     */
    @Transactional
    @Override
    public int updateBidProjectWorkflow(BidProjectWorkflow bidProjectWorkflow)
    {
        bidProjectWorkflowMapper.deleteBidProjectWorkflowPointByWorkflowId(bidProjectWorkflow.getWorkflowId());
        insertBidProjectWorkflowPoint(bidProjectWorkflow);
        return bidProjectWorkflowMapper.updateBidProjectWorkflow(bidProjectWorkflow);
    }

    /**
     * 批量删除投标进程管理
     * 
     * @param workflowIds 需要删除的投标进程管理主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteBidProjectWorkflowByWorkflowIds(Long[] workflowIds)
    {
        bidProjectWorkflowMapper.deleteBidProjectWorkflowPointByWorkflowIds(workflowIds);
        return bidProjectWorkflowMapper.deleteBidProjectWorkflowByWorkflowIds(workflowIds);
    }

    /**
     * 删除投标进程管理信息
     * 
     * @param workflowId 投标进程管理主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteBidProjectWorkflowByWorkflowId(Long workflowId)
    {
        bidProjectWorkflowMapper.deleteBidProjectWorkflowPointByWorkflowId(workflowId);
        return bidProjectWorkflowMapper.deleteBidProjectWorkflowByWorkflowId(workflowId);
    }

    /**
     * 新增投标流程管理信息
     * 
     * @param bidProjectWorkflow 投标进程管理对象
     */
    public void insertBidProjectWorkflowPoint(BidProjectWorkflow bidProjectWorkflow)
    {
        List<BidProjectWorkflowPoint> bidProjectWorkflowPointList = bidProjectWorkflow.getBidProjectWorkflowPointList();
        Long workflowId = bidProjectWorkflow.getWorkflowId();
        if (StringUtils.isNotNull(bidProjectWorkflowPointList))
        {
            List<BidProjectWorkflowPoint> list = new ArrayList<BidProjectWorkflowPoint>();
            for (BidProjectWorkflowPoint bidProjectWorkflowPoint : bidProjectWorkflowPointList)
            {
                bidProjectWorkflowPoint.setWorkflowId(workflowId);
                list.add(bidProjectWorkflowPoint);
            }
            if (list.size() > 0)
            {
                bidProjectWorkflowMapper.batchBidProjectWorkflowPoint(list);
            }
        }
    }
}
